Skip to main content

Go Generics

Table of Contents

类型约束

func detail[T string| int| bool](item T) {       // 多类型参数定义
fmt.Printf("value: %v \n", variable) // 打印变量的值
fmt.Printf("type: %T", variable) // 打印变量的类型
}

func add[T string| int](a T, b T) { // 多类型参数定义, a b 类型相同, 且都为 string 或 int
fmt.Println(a + b) // 打印结果
}

comparable and ordered

comparable(可比较) 和 可排序(ordered)

官方定义

type Ordered interface {
~int | ~int8 | ~int16 | ~int32 | ~int64 |
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr |
~float32 | ~float64 |
~string
}